/*
Copyright (C) 2013-2020 LZE
Program:Big_Int
*/
#include<bits/stdc++.h>
#define INF 0x7f7f7f7f
using namespace std;
typedef long long ll;
struct Big_Int {
	string value;
};
string zero_padding_front(string number_1,ll number_of_zero_padding_front);
string bi_add(Big_Int number_1,Big_Int number_2) {
	ll length_of_n1=number_1.value.length();
	ll length_of_n2=number_2.value.length();
	string n1_number=number_1.value;
	string n2_number=number_2.value;
	ll max_of_string_length=max(length_of_n1,length_of_n2);
	if(length_of_n1<max_of_string_length)
		n1_number=zero_padding_front(n1_number,max_of_string_length);
	else n2_number=zero_padding_front(n2_number,max_of_string_length);
	string add_sum="";
	int last_num=0,add_sum_1=0,add_sum_2=0,add_sum_add=0;
	for(int i=max_of_string_length-1; i>=0; i--) {
		add_sum_1=n1_number[i]-'0';
		add_sum_2=n2_number[i]-'0';
		add_sum_add=add_sum_1+add_sum_2+last_num;
		add_sum=to_string(add_sum_add%10)+add_sum;
		last_num=add_sum_add/10;
	}
	if(last_num!=0)add_sum=to_string(last_num)+add_sum;
	return add_sum;
}
string zero_padding_front(string number_1,ll number_of_zero_padding_front) {
	for(ll i=number_1.length(); i<number_of_zero_padding_front; i++)
		number_1="0"+number_1;
	return number_1;
}
bool bi_max(Big_Int number_1,Big_Int number_2) {
	ll length_of_n1=number_1.value.length();
	ll length_of_n2=number_2.value.length();
	string n1_number=number_1.value;
	string n2_number=number_2.value;
	ll max_of_string_length=max(length_of_n1,length_of_n2);
	if(length_of_n1<max_of_string_length)
		n1_number=zero_padding_front(n1_number,max_of_string_length);
	else n2_number=zero_padding_front(n2_number,max_of_string_length);
	if(length_of_n1==length_of_n2) {
		for(int i=0; i<max_of_string_length; i++) {
			if(n1_number[i]>n2_number[i])return true;
			else if(n1_number[i]<n2_number[i])return false;
		}
	} else if(length_of_n1>length_of_n2)return true;
	return false;
}
bool bi_min(Big_Int number_1,Big_Int number_2) {
	ll length_of_n1=number_1.value.length();
	ll length_of_n2=number_2.value.length();
	string n1_number=number_1.value;
	string n2_number=number_2.value;
	ll max_of_string_length=max(length_of_n1,length_of_n2);
	if(length_of_n1<max_of_string_length)
		n1_number=zero_padding_front(n1_number,max_of_string_length);
	else n2_number=zero_padding_front(n2_number,max_of_string_length);
	if(length_of_n1==length_of_n2) {
		for(int i=0; i<max_of_string_length; i++) {
			if(n1_number[i]<n2_number[i])return true;
			else if(n1_number[i]>n2_number[i])return false;
		}
	} else if(length_of_n1<length_of_n2)return true;
	return false;
}
bool bi_eq(Big_Int number_1,Big_Int number_2) {
	ll length_of_n1=number_1.value.length();
	ll length_of_n2=number_2.value.length();
	string n1_number=number_1.value;
	string n2_number=number_2.value;
	ll max_of_string_length=max(length_of_n1,length_of_n2);
	if(length_of_n1<max_of_string_length)
		n1_number=zero_padding_front(n1_number,max_of_string_length);
	else n2_number=zero_padding_front(n2_number,max_of_string_length);
	if(length_of_n1==length_of_n2) {
		for(int i=0; i<max_of_string_length; i++)
			if(n1_number[i]!=n2_number[i])return false;
	} else return false;
	return true;
}
string mul_speed_low(Big_Int number_1,Big_Int number_2) {
	string n1_number=number_1.value;
	string n2_number=number_2.value;
	Big_Int sum_of_twonumbers;
	sum_of_twonumbers.value="0";
	if(bi_max(number_2,number_1)) {
		Big_Int count_times,Constant_number;
		Constant_number.value="1";
		count_times.value="0";
		for(; bi_min(count_times,number_1);
		        count_times.value=bi_add(count_times,Constant_number))
			sum_of_twonumbers.value=bi_add(sum_of_twonumbers,number_2);
	} else {
		Big_Int count_times,Constant_number;
		Constant_number.value="1";
		count_times.value="0";
		for(; bi_min(count_times,number_2);
		        count_times.value=bi_add(count_times,Constant_number))
			sum_of_twonumbers.value=bi_add(sum_of_twonumbers,number_1);
	}
	return sum_of_twonumbers.value;
}
string bi_mul(Big_Int number_1,Big_Int number_2) {
	if(!bi_max(number_1,number_2)){
		Big_Int tmp=number_1;
		number_1=number_2;
		number_2=tmp;
	}
	string mul_sum="";
	ll length_of_n1=number_1.value.length();
	ll length_of_n2=number_2.value.length();
	string n1_number_original=number_1.value.c_str();
	string n2_number_original=number_2.value.c_str();
	ll max_of_string_length=max(length_of_n1,length_of_n2);
	ll n1_number[2000]={0},n2_number[2000]={0},number_of_ans[2000]={0};
	ll l=0;
	for(int i=0;i<max_of_string_length;i++)n1_number[length_of_n1-i]=n1_number_original[i]-48;
	for(int i=0;i<max_of_string_length;i++)n2_number[length_of_n2-i]=n2_number_original[i]-48;
	for(int i=0;i<=max_of_string_length;i++) {
		l=0;
		for(int j=1;j<=max_of_string_length;j++) {
			number_of_ans[i+j-1]+=n1_number[i]*n2_number[j]+l;
			l=number_of_ans[i+j-1]/10;
			number_of_ans[i+j-1]%=10;
		}
		number_of_ans[i+max_of_string_length]=l;
	}
	ll length_of_sum=max_of_string_length+max_of_string_length;
	while(number_of_ans[length_of_sum]==0&&length_of_sum>1)length_of_sum--;
	for(int i=length_of_sum;i>0;i--)mul_sum+=to_string(number_of_ans[i]);
	return mul_sum;
}
int main(){
	Big_Int a,b;
	cin>>a.value>>b.value;
	return 0;
}
